<?php
class TicketsController extends Zend_Controller_Action
{
	/*
	 * Default action
	 */
	public function indexAction(){
		//in der indexAction werden hier alle (dem Projekt zugeordneten) Tickets ausgeben
		//Ticket-Objekt erstellen
		$ticket = new Model_Ticket();
		
		$this->view->ticketarr = $ticket->getAll()->toArray();

		// Seite aus URL besorgen
		$page = (is_numeric($this->getRequest()->getParam("page"))) ? $this->getRequest()->getParam("page") : 1;		
		// Daten übergeben
		$paginator = Zend_Paginator::factory($this->view->ticketarr);		
		// Anzahl Datensätzte
		$paginator->setItemCountPerPage(Model_Ticket::TICKETS_PER_PAGE);		
		// Momentane Seite
		$paginator->setCurrentPageNumber($page);		
		// Paginator an die View geben
		$this->view->paginator = $paginator;
	}
	public function filterbyprojectAction(){
		//Wir verwenden hier zunächst das index-Template
		$this->_helper->viewRenderer('index');
		//Ticket-Objekt erstellen
		$ticket = new Model_Ticket();
		//PID aus der URL auslesen...
		$pid = $this->getRequest()->getParam("pid");		
		$this->view->ticketarr = $ticket->getTicketsByProjectID($pid)->toArray();

		// Seite aus URL besorgen
		$page = (is_numeric($this->getRequest()->getParam("page"))) ? $this->getRequest()->getParam("page") : 1;		
		// Daten übergeben
		$paginator = Zend_Paginator::factory($this->view->ticketarr);		
		// Anzahl Datensätzte
		$paginator->setItemCountPerPage(Model_Ticket::TICKETS_PER_PAGE);		
		// Momentane Seite
		$paginator->setCurrentPageNumber($page);		
		// Paginator an die View geben
		$this->view->paginator = $paginator;
	}
	public function newAction(){
		//User-Model
		$user = new Model_User();
		//Wir verwenden hier zunächst das index-Template
		$this->_helper->viewRenderer('index');
		//Neues Ticket erstellen
		$this->view->ticket = array();
		$this->view->edittype = "new";
		//alle Projekte holen
		$project = new Model_Project();
		$this->view->projectarr = $project->getAll()->toArray();
		//Kostenarten holen
		$cost = new Model_Cost();
		$this->view->costarr = $cost->getAll()->toArray();
		//alle Entwickler & darüber
		$this->view->workerarr = $user->getUsersByRoleID(Model_Role::ROLE_DEVELOPER, Model_Role::ROLE_MANAGER, Model_Role::ROLE_ADMIN);
	}
	public function editAction(){
		//Wir verwenden hier zunächst das index-Template
		$this->_helper->viewRenderer('index');
		//Ticket laden und in das Array schreiben
		$tid = $this->getRequest()->getParam("tid");
		$ticket = new Model_Ticket();
		$this->view->ticket = $ticket->getTicketByID($tid);
		$this->view->edittype = "edit";
		//alle Projekte holen
		$project = new Model_Project();
		$user = new Model_User();
		$comment = new Model_Comment();
		$this->view->projectarr = $project->getAll()->toArray();
		$this->view->commentarr = $comment->getCommentsByTicketID($tid);
		//Kostenarten holen
		$cost = new Model_Cost();
		$this->view->costarr = $cost->getAll()->toArray();
		//alle Entwickler & darüber
		$this->view->workerarr = $user->getUsersByRoleID(Model_Role::ROLE_DEVELOPER, Model_Role::ROLE_MANAGER, Model_Role::ROLE_ADMIN);
	}
	public function deleteAction(){
		//Wir verwenden hier zunächst das index-Template
		$this->_helper->viewRenderer('index');
		//Ticket laden und in das Array schreiben
		$tid = $this->getRequest()->getParam("tid");
		$ticket = new Model_Ticket();
		$ticket->deleteTicket($tid);
		//@TODO:Rückmeldung für den User!!!
		$this->_forward("index");
	}
	public function saveticketAction(){
		//Kein Viewrenderer verwenden, da wir hier nur die Rückgabewerte für AJAX ausgeben müssen
		$this->_helper->viewRenderer->setNoRender();
		//Werte aus dem Formular an das Objekt übergeben und in die Datenbank speichern:
		//Ticket-Objekt erstellen
		$ticket = new Model_Ticket();
		//Postdaten holen
		$request = new Zend_Controller_Request_Apache404();
		$data = $request->getParams();
		//Ticket in die DB
		$id = $ticket->createTicket($data);
		//Rückgabe für AJAX
		if($id !== false) {
			die("success");
		}
		else {
			die("error");
		}
	}
	public function editticketAction(){
		//Kein Viewrenderer verwenden, da wir hier nur die Rückgabewerte für AJAX ausgeben müssen
		$this->_helper->viewRenderer->setNoRender();
		//Werte aus dem Formular an das Objekt übergeben und in die Datenbank speichern:
		//Ticket-Objekt erstellen
		$ticket = new Model_Ticket();
		//Postdaten holen
		$request = new Zend_Controller_Request_Apache404();
		$data = $request->getParams();
		//Ticket-ID holen
		$tid = $data['tid'];
		//Ticket updaten
		$rows_updated = $ticket->updateTicket($tid, $data);
		//Rückgabe für AJAX
		if($rows_updated == '1') {
			die("success");
		}
		else {
			die("error");
		}
	}
	public function ajaxcommentformAction(){
		die($this->view->render("tickets/partial/newcomment.phtml"));
	}
	public function ajaxmarkticketsforbillingAction(){
		//Kein Viewrenderer verwenden, da wir hier nur die Rückgabewerte für AJAX ausgeben müssen
		$this->_helper->viewRenderer->setNoRender();
		//Rückgabe-Array für JS
		$ret = array();
		//Ticket-Objekt erstellen
		$ticket = new Model_Ticket();
		//Postdaten holen
		$request = new Zend_Controller_Request_Apache404();
		$data = $request->getParams();		
		foreach($data as $key => $value) {
			if(is_numeric($key) && $value == "on") {
				//Ticket als verrechnbar markieren
				$ticket->setStatus(Model_Ticket::STATUS_TOBILL, $key);
				//ins Rückgabe-Array für JS
				array_push($ret, $key);
			}
		}
		die(implode(",",$ret));
	}
}